Previous: Block agenda, Up: Custom agenda views [Contents][Index]
Org mode contains a number of variables regulating agenda
construction and display. The global variables define the
behavior for all agenda commands, including the custom commands.
However, if you want to change some settings just for a single
custom view, you can do so. Setting options requires inserting a
list of variable names and values at the right spot in
org-agenda-custom-commands. For example:
(setq org-agenda-custom-commands
'(("w" todo "WAITING"
((org-agenda-sorting-strategy '(priority-down))
(org-agenda-prefix-format " Mixed: ")))
("U" tags-tree "+boss-urgent"
((org-show-following-heading nil)
(org-show-hierarchy-above nil)))
("N" search ""
((org-agenda-files '("~org/notes.org"))
(org-agenda-text-search-extra-files nil)))))
Now the C-c a w command will sort the collected entries only by priority, and the prefix format is modified to just say ‘ Mixed: ’ instead of giving the category of the entry. The sparse tags tree of C-c a U will now turn out ultra-compact, because neither the headline hierarchy above the match, nor the headline following the match will be shown. The command C-c a N will do a text search limited to only a single file.
For command sets creating a block agenda,
org-agenda-custom-commands has two separate spots
for setting options. You can add options that should be valid for
just a single command in the set, and options that should be
valid for all commands in the set. The former are just added to
the command entry; the latter must come after the list of command
entries. Going back to the block agenda example (see Block agenda), let’s
change the sorting strategy for the C-c a h commands
to priority-down, but let’s sort the results
for GARDEN tags query in the opposite order,
priority-up. This would look like this:
(setq org-agenda-custom-commands
'(("h" "Agenda and Home-related tasks"
((agenda)
(tags-todo "home")
(tags "garden"
((org-agenda-sorting-strategy '(priority-up)))))
((org-agenda-sorting-strategy '(priority-down))))
("o" "Agenda and Office-related tasks"
((agenda)
(tags-todo "work")
(tags "office")))))
As you see, the values and parentheses setting is a little complex. When in doubt, use the customize interface to set this variable—it fully supports its structure. Just one caveat: when setting options in this interface, the values are just Lisp expressions. So if the value is a string, you need to add the double-quotes around the value yourself.
To control whether an agenda command should be accessible from
a specific context, you can customize
org-agenda-custom-commands-contexts. Let’s say
for example that you have an agenda commands "o"
displaying a view that you only need when reading emails. Then
you would configure this option like this:
(setq org-agenda-custom-commands-contexts
'(("o" (in-mode . "message-mode"))))
You can also tell that the command key "o" should
refer to another command key "r". In that case, add
this command key like this:
(setq org-agenda-custom-commands-contexts
'(("o" "r" (in-mode . "message-mode"))))
See the docstring of the variable for more information.
Previous: Block agenda, Up: Custom agenda views [Contents][Index]